package com.lizicloud.infrastructure.common.utils;

import com.lizicloud.infrastructure.common.constant.AppConstants;

/**
 * 分页工具类
 */
public class PageUtils {
    
    /**
     * 校验页码
     */
    public static int validatePageNum(int pageNum) {
        return Math.max(pageNum, 1); // 默认页码为1
    }
    
    /**
     * 校验每页条数
     */
    public static int validatePageSize(Integer pageSize) {
        if (pageSize == null || pageSize < 1) {
            return AppConstants.DEFAULT_PAGE_SIZE;
        }
        if (pageSize > AppConstants.MAX_PAGE_SIZE) {
            return AppConstants.MAX_PAGE_SIZE;
        }
        return pageSize;
    }
    
    /**
     * 计算偏移量
     */
    public static int calculateOffset(int pageNum, int pageSize) {
        return (pageNum - 1) * pageSize;
    }
    
    /**
     * 计算总页数
     */
    public static int calculateTotalPages(long total, int pageSize) {
        if (total <= 0 || pageSize <= 0) {
            return 0;
        }
        return (int) Math.ceil((double) total / pageSize);
    }
    
    /**
     * 检查是否有上一页
     */
    public static boolean hasPreviousPage(int pageNum) {
        return pageNum > 1;
    }
    
    /**
     * 检查是否有下一页
     */
    public static boolean hasNextPage(int pageNum, int totalPages) {
        return pageNum < totalPages;
    }
    
    private PageUtils() {
        // 私有构造函数，防止实例化
    }
}